{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![openclassrooms](https://s3.eu-west-1.amazonaws.com/course.oc-static.com/courses/6204541/1+HnqdJ-5ofxiPP9HIxdNdpw.jpeg)\n",
    "\n",
    "# Initiez-vous à Python pour l'analyse de données\n",
    "\n",
    "## Quiz : Utilisez des librairies Python spécialisées\n",
    "\n",
    "<br><br>\n",
    "\n",
    "**On considère deux jeux de hasard :**\n",
    "- En premier lieu un jeu que l’on notera **A** qui est un simple jeu de pile ou face avec une pièce biaisée (pile avec une probabilité de p=0.49). Le joueur mise un euro et lance la pièce : s’il obtient pile il gagne un euro en plus de récupérer sa mise, sinon il perd sa mise.\n",
    "- Ensuite, un jeu que l’on notera **B**, qui est un jeu avec deux pièces biaisées. La première pièce donne pile avec une probabilité p1 = 0.09 et la seconde pièce donne pile avec une probabilité p2 = 0.74. Le joueur de ne peut miser qu’un euro à la fois ! En revanche, on regarde à chaque lancé son capital (la somme d’argent total) dont il dispose pour déterminer quelle pièce lancer : si le capital est un multiple de 3, on lance la pièce numéro une, sinon on lance la seconde pièce. Comme dans le jeu A, le joueur remporte sa mise plus un euro supplémentaire si la pièce choisie tombe sur pile, sinon il perd sa mise.\n",
    "\n",
    "Mettez en place ces deux jeux de hasard avec Python, via l’utilisation de librairies vues un peu plus tôt. On considère qu’un jeu est gagnant lorsqu’un joueur est censé finir avec un capital plus élevé qu’initialement après avoir effectué un grand nombre (par exemple : plusieurs centaines) de parties.\n",
    "\n",
    "Organisons notre code en deux parties :\n",
    "1. Tout d'abord, la définition des différentes pièces qui vont être lancées via différentes fonctions\n",
    "2. le test de nos jeux sur de nombreux lancés\n",
    "\n",
    "Définissons donc les fonctions :"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "import random\n",
    "    \n",
    "def pieceJeuA():\n",
    "    if random.uniform(0,1) <= 0.49:\n",
    "        return 'pile'\n",
    "    else:\n",
    "        return 'face'\n",
    "    \n",
    "def pieceJeuB1():\n",
    "    if random.uniform(0,1) <= 0.09:\n",
    "        return 'pile'\n",
    "    else:\n",
    "        return 'face'\n",
    "    \n",
    "def pieceJeuB2():\n",
    "    if random.random() <= 0.74:\n",
    "        return 'pile'\n",
    "    else:\n",
    "        return 'face'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Test du jeu A :"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Après 10000 lancés, on a 710 € de capital\n"
     ]
    }
   ],
   "source": [
    "capital = 1000\n",
    "nb_lances = 10000\n",
    "\n",
    "for i in range(nb_lances):\n",
    "    piece = pieceJeuA()\n",
    "    if piece == 'pile':\n",
    "        capital += 1  # on gagne 1 euro si on a pile\n",
    "    else:\n",
    "        capital -= 1  # on perd 1 euro sinon\n",
    "\n",
    "print(\"Après\", nb_lances, \"lancés, on a\", capital, \"€ de capital\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Vous pouvez executer le code plusieurs fois pour en avoir le coeur net (voire augmenter le nombre de lancés), mais vous finirez toujours avec un capital final plus faible que le capital initial : **le jeu A est clairement perdant !**\n",
    "\n",
    "Voyons à présent ce qu'il en est du jeu B :"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Après 10000 lancés, on a 762 € de capital\n"
     ]
    }
   ],
   "source": [
    "capital = 1000\n",
    "nb_lances = 10000\n",
    "\n",
    "for i in range(nb_lances):\n",
    "    if capital % 3 == 0:  # on vérifie si le capital est un multiple de 3 ou non\n",
    "        piece = pieceJeuB1()\n",
    "    else:\n",
    "        piece = pieceJeuB2()\n",
    "\n",
    "    if piece == 'pile':\n",
    "        capital += 1  # on gagne 1 euro si on a pile\n",
    "    else:\n",
    "        capital -= 1  # on perd 1 euro sinon\n",
    "\n",
    "print(\"Après\", nb_lances, \"lancés, on a\", capital, \"€ de capital\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Encore une fois, vous pouvez executer le code plusieurs fois pour en avoir le coeur net (voire augmenter le nombre de lancés), mais vous finirez toujours avec un capital final plus faible que le capital initial : **le jeu B est également perdant !**\n",
    "\n",
    "Ainsi, la bonne réponse était donc : **les deux jeux sont perdants !**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
